package com.andy.blog.admin.service;

import com.andy.blog.admin.dto.SysMenuDTO;
import com.andy.blog.admin.dto.TreeSelectDTO;
import com.andy.blog.dal.domain.vo.RouterVo;
import com.andy.blog.dal.vo.SysMenuVO;

import java.util.List;
import java.util.Map;

/**
 * Created by andy on 2023/6/27 11:18
 */
public interface SysMenuBusService {
    /**
     * 获取菜单列表
     */
    List<SysMenuDTO> selectMenuList(SysMenuVO sysMenuVO);

    /**
     * 删除菜单
     */
    void removeMenuById(Long menuId);

    /**
     * 编辑
     */
    void edit(SysMenuVO sysMenuVO);

    /**
     * 新增
     */
    void add(SysMenuVO sysMenuVO);

    /**
     * 加载对应角色菜单列表树
     */
    Map<String, Object> roleMenuTreeSelect(Long roleId);

    /**
     * 查询菜单详情
     */
    SysMenuDTO selectMenuById(Long id);

    /**
     * 构建前端所需要下拉树结构
     */
    List<TreeSelectDTO> buildMenuTreeSelect(SysMenuVO sysMenuVO);

    /**
     * 根据用户ID查询菜单树信息
     */
    List<SysMenuDTO> selectMenuTreeByUserId(Long userId);

    /**
     * 构建前端路由所需要的菜单
     */
    List<RouterVo> buildMenus(List<SysMenuDTO> menus);
}
